Browser Useを用いたブラウザ操作の自動化AIエージェント
はじめに
2023年に一般向けに登場した生成AIは、2024年には実際の業務にはなくてはならない程に賢くなりました。そして2025年、この流れはAIエージェントという形でより深く業務に組み込まれてくる可能性があります。今回は、ブラウザ操作を自動化する「Browser-Use」というツールを使って、AIエージェントが一体どういったものか体感してみたいと思います。
Browser-Useの概要
Browser-Useは、ローカルPC等でブラウザを自動操作するためのPythonライブラリです。生成AIと組み合わせることで、AIエージェントとして動作することができます。
インストール・設定方法
セットアップは簡単です。必要なライブラリをインストールしてください。
今回の動作環境は以下となっています。
- macOS Sonoma 14.6.1
- python 3.11.11+
- pyenv 2.3.5
- pip 24.3.1
$ pip install browser-use
$ pip install langchain
$ playwright install
生成AIのAPIを利用するために、環境変数または環境ファイルにAPIキーを設定しておいてください。それぞれサインアップと契約が必要です。
$ export OPENAI_API_KEY=**********
$ export ANTHROPIC_API_KEY=**********
動作確認
事前の設定が終わりましたら、簡単なコードを書いて動作確認をしてみます。まずは、OpenAIを使ってみましょう。LangChainからOpenAI用のラッパーでモデルを指定し、タスクを与えて実行します。
OpenAI
from browser_use import Agent
from langchain_openai import ChatOpenAI
import asyncio
llm = ChatOpenAI(model='gpt-4o')
task='今日の運勢について教えて'
agent = Agent(
task=task,
llm=llm,
)
async def main():
await agent.run()
asyncio.run(main())
以下は実行結果です。Chromiumブラウザが起動され、生成AIによって指定されたURLが開きます。次に画面の内容を読み取ってタスクに沿った操作をしていきます。ここでは、Google検索から占いサイトの検索を始めました。
占いサイトを開いてコンテンツを読み取っています。
そして、読み取ったコンテンツからタスク指示の内容を達成したので出力して終了しています。
python 01agent.py
INFO [browser_use] BrowserUse logging setup complete with level info
INFO [root] Anonymized telemetry enabled. See https://github.com/gregpr07/browser-use for more information.
INFO [agent] 🚀 Starting task: 今日の運勢について教えて
INFO [agent]
📍 Step 1
INFO [agent] 🤷 Eval: Unknown - No prior goal was set.
INFO [agent] 🧠 Memory: No actions have been taken yet. Current task is to find today's fortune (今日の運勢).
INFO [agent] 🎯 Next goal: Search for today's fortune (今日の運勢) on the internet.
INFO [agent] 🛠️ Action 1/1: {"search_google":{"query":"今日の運勢"}}
INFO [controller] 🔍 Searched for "今日の運勢" in Google
INFO [agent]
📍 Step 2
INFO [agent] 👍 Eval: Success - The search for today's fortune yielded relevant results with multiple links providing horoscopes.
INFO [agent] 🧠 Memory: Search results for today's fortune are visible with options for different zodiac signs and sources.
INFO [agent] 🎯 Next goal: Click on a specific link to view detailed fortune information.
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":17}}
INFO [controller] 🖱️ Clicked index 17
INFO [agent]
📍 Step 3
INFO [agent] 👍 Eval: Success - Successfully navigated to the horoscope page with today's fortune rankings for zodiac signs.
INFO [agent] 🧠 Memory: Reached the horoscope page with today's fortune rankings for zodiac signs.
INFO [agent] 🎯 Next goal: Summarize today's fortune rankings for the zodiac signs.
INFO [agent] 🛠️ Action 1/1: {"done":{"text":"Today's fortune rankings for zodiac signs:\n\n1. **Gemini (ふたご座)**: 5/5 - Be meticulous with each task.\n2. **Libra (てんびん座)**: 4.5/5 - It seems you can execute what you want.\n3. **Taurus (おうし座)**: 4.5/5 - Spend time luxuriously thinking.\n4. **Aries (おひつじ座)**: 4/5 - Express 'thank you' sincerely.\n5. **Capricorn (やぎ座)**: 3.5/5 - Surround yourself with things you love.\n6. **Leo (しし座)**: 3.5/5 - Value relationships connected by kindness.\n7. **Virgo (おとめ座)**: 3/5 - Trust your senses as you spend your day.\n8. **Sagittarius (いて座)**: 3/5 - Start casually and proceed little by little.\n9. **Pisces (うお座)**: 2.5/5 - Be flexible without overdoing it.\n10. **Cancer (かに座)**: 2/5 - Release the emotions you have suppressed.\n11. **Scorpio (さそり座)**: 1.5/5 - Trust your inner voice.\n12. **Aquarius (みずがめ座)**: 1/5 - Respond positively to changes."}}
INFO [agent] 📄 Result: Today's fortune rankings for zodiac signs:
1. **Gemini (ふたご座)**: 5/5 - Be meticulous with each task.
2. **Libra (てんびん座)**: 4.5/5 - It seems you can execute what you want.
3. **Taurus (おうし座)**: 4.5/5 - Spend time luxuriously thinking.
4. **Aries (おひつじ座)**: 4/5 - Express 'thank you' sincerely.
5. **Capricorn (やぎ座)**: 3.5/5 - Surround yourself with things you love.
6. **Leo (しし座)**: 3.5/5 - Value relationships connected by kindness.
7. **Virgo (おとめ座)**: 3/5 - Trust your senses as you spend your day.
8. **Sagittarius (いて座)**: 3/5 - Start casually and proceed little by little.
9. **Pisces (うお座)**: 2.5/5 - Be flexible without overdoing it.
10. **Cancer (かに座)**: 2/5 - Release the emotions you have suppressed.
11. **Scorpio (さそり座)**: 1.5/5 - Trust your inner voice.
12. **Aquarius (みずがめ座)**: 1/5 - Respond positively to changes.
INFO [agent] ✅ Task completed successfully
どうやら初期設定では英語で会話する言語が英語になっているようです。しかも実行するたびに挙動に揺らぎがあります。細かい設定はプロンプトで与えてみましょう。例えば、「回答は日本語にする」などです。実際にやってみましょう。
英語で検索を始めました。
詳細ページも英語です。最後の回答は日本語になりました。
python 01agent.py
INFO [browser_use] BrowserUse logging setup complete with level info
INFO [root] Anonymized telemetry enabled. See https://github.com/gregpr07/browser-use for more information.
INFO [agent] 🚀 Starting task: あなたは有名な占い師です。今日の運勢について英語で調べて日本語で可愛く回答してください。
INFO [agent]
📍 Step 1
INFO [agent] 🤷 Eval: Unknown - The page is blank, so the previous goal could not be evaluated.
INFO [agent] 🧠 Memory: Need to search for today's fortune in English.
INFO [agent] 🎯 Next goal: Search for today's fortune in English using Google.
INFO [agent] 🛠️ Action 1/1: {"search_google":{"query":"today's horoscope"}}
INFO [controller] 🔍 Searched for "today's horoscope" in Google
INFO [agent]
📍 Step 2
INFO [agent] 👍 Eval: Success - The search results for today's horoscope are displayed.
INFO [agent] 🧠 Memory: Search results for today's horoscope are available.
INFO [agent] 🎯 Next goal: Extract horoscope information from one of the search results.
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":18}}
INFO [controller] 🖱️ Clicked index 18
INFO [agent]
📍 Step 3
INFO [agent] 👍 Eval: Success - The horoscope page is loaded.
INFO [agent] 🧠 Memory: Horoscope page is open, ready to extract today's horoscope.
INFO [agent] 🎯 Next goal: Extract the horoscope for today.
INFO [agent] 🛠️ Action 1/1: {"extract_content":{"value":"text"}}
INFO [controller] 📄 Extracted page content
INFO [agent]
📍 Step 4
INFO [agent] 👍 Eval: Success - Extracted the horoscope content for today.
INFO [agent] 🧠 Memory: Today's horoscope has been extracted for conversion into a cute Japanese response.
INFO [agent] 🎯 Next goal: Convert the horoscope into a cute Japanese response.
INFO [agent] 🛠️ Action 1/1: {"done":{"text":"今日はアイディアでいっぱいな日です!💡✨ 新しいことに挑戦して、心をワクワクさせましょう!自分の直感を信じて、素敵な一日を過ごしてくださいね。🌟🐱💕"}}
INFO [agent] 📄 Result: 今日はアイディアでいっぱいな日です!💡✨ 新しいことに挑戦して、心をワクワクさせましょう!自分の直感を信じて、素敵な一日を過ごしてくださいね。🌟🐱💕
INFO [agent] ✅ Task completed successfully
調査した結果のコメントはとても可愛い感じですねw。AIエージェントがどのような人格で作業するのか指定できるのは良いですね。英語で検索して、ドイツ語で考えて、日本語で回答するといった動きを指定することができます。
これらのコンテンツの検索は、人間が手で操作をするのではなく、AIが自動で巡回してコンテンツを取得しているので、Bot扱いになると思います。多くの公開されているWebサイトではBotによる自動巡回や操作を利用規約や宣言で認めていませんので、取り扱いには十分に注意をしてください。
Anthropic
次にAnthropicの例です。
from browser_use import Agent
from langchain_anthropic import ChatAnthropic
import asyncio
llm = ChatAnthropic(model_name='claude-3-5-sonnet-latest')
task='今日の運勢について教えてて'
agent = Agent(
task=task,
llm=llm,
)
async def main():
await agent.run()
asyncio.run(main())
実行結果は以下です。最初から日本語で回答してくれました。生成AIモデルの性格が出ていますね。
python 02agent.py
INFO [browser_use] BrowserUse logging setup complete with level info
INFO [root] Anonymized telemetry enabled. See https://github.com/gregpr07/browser-use for more information.
INFO [agent] 🚀 Starting task: 今日の運勢について教えてて
INFO [agent]
📍 Step 1
INFO [agent] 🤷 Eval: Unknown - Starting fresh from blank page
INFO [agent] 🧠 Memory: Need to search for today's fortune (今日の運勢)
INFO [agent] 🎯 Next goal: Search for a Japanese fortune telling website
INFO [agent] 🛠️ Action 1/1: {"search_google":{"query":"今日の運勢 占い"}}
INFO [controller] 🔍 Searched for "今日の運勢 占い" in Google
INFO [agent]
📍 Step 2
INFO [agent] 👍 Eval: Success - Found several fortune telling websites from the Google search results
INFO [agent] 🧠 Memory: Found multiple fortune telling sites including LINE占い, VOGUE, 25ans, and goo占い. LINE占い seems most comprehensive with rankings for all 12 zodiac signs
INFO [agent] 🎯 Next goal: Visit LINE占い website to get today's fortune readings
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":18}}
INFO [controller] 🖱️ Clicked index 18
INFO [agent]
📍 Step 3
INFO [agent] 👍 Eval: Success - Successfully reached the horoscope ranking page showing today's fortune for all zodiac signs
INFO [agent] 🧠 Memory: Found complete fortune ranking for today:
1位: ふたご座(★5)
2位: てんびん座(★4.5)
3位: おうし座(★4.5)
4位: おひつじ座(★4)
5位: やぎ座(★3.5)
6位: しし座(★3.5)
7位: おとめ座(★3)
8位: いて座(★3)
9位: うお座(★2.5)
10位: かに座(★2)
11位: さそり座(★1.5)
12位: みずがめ座(★1)
INFO [agent] 🎯 Next goal: Provide complete fortune information to user
INFO [agent] 🛠️ Action 1/1: {"done":{"text":"今日の12星座占いランキングをお知らせします:\n\n1位:ふたご座 ★5\n「一つひとつの作業を丁寧に」\n\n2位:てんびん座 ★4.5\n「やりたいことを実行できそう」\n\n3位:おうし座 ★4.5\n「考える時間を贅沢に持ってみて」\n\n4位:おひつじ座 ★4\n「ありがとうを素直に伝えて」\n\n5位:やぎ座 ★3.5\n「好きなもので周囲を満たして」\n\n6位:しし座 ★3.5\n「優しさで繋がる関係を大事に」\n\n7位:おとめ座 ★3\n「感覚を信じて過ごしてみて」\n\n8位:いて座 ★3\n「まずは気楽に少しずつ進めて」\n\n9位:うお座 ★2.5\n「無理せずに柔軟な考え方で」\n\n10位:かに座 ★2\n「抑え込んでいた感情を解放して」\n\n11位:さそり座 ★1.5\n「自分の心の声を信じて」\n\n12位:みずがめ座 ★1\n「変化にポジティブな対応を」"}}
INFO [agent] 📄 Result: 今日の12星座占いランキングをお知らせします:
1位:ふたご座 ★5
「一つひとつの作業を丁寧に」
2位:てんびん座 ★4.5
「やりたいことを実行できそう」
3位:おうし座 ★4.5
「考える時間を贅沢に持ってみて」
4位:おひつじ座 ★4
「ありがとうを素直に伝えて」
5位:やぎ座 ★3.5
「好きなもので周囲を満たして」
6位:しし座 ★3.5
「優しさで繋がる関係を大事に」
7位:おとめ座 ★3
「感覚を信じて過ごしてみて」
8位:いて座 ★3
「まずは気楽に少しずつ進めて」
9位:うお座 ★2.5
「無理せずに柔軟な考え方で」
10位:かに座 ★2
「抑え込んでいた感情を解放して」
11位:さそり座 ★1.5
「自分の心の声を信じて」
12位:みずがめ座 ★1
「変化にポジティブな対応を」
INFO [agent] ✅ Task completed successfully
生成AIの面白いところは、入出力のゆらぎに対応していることです。今までのITにあった厳密な入出力の設定が不要です。逆に、不安定なため、どんな結果になるのか制御するにはコツが必要です。これはAIエージェントでも同様だと思いました。
ブラウザを裏側で実行する
実際にブラウザが起動して操作の流れを見るのは楽しいですが、慣れてくると目障りになってきます。そこで、ブラウザをヘッドレスモードで起動してバックグラウンド実行してみましょう。ブラウザの起動オプションを指定することで実現できます。今後はクラウド側のサーバーレス環境でAIエージェントがWebサイトを自動巡回して実行するといった動きが活発になってくるでしょう。
python 03agent.py
INFO [browser_use] BrowserUse logging setup complete with level info
INFO [root] Anonymized telemetry enabled. See https://github.com/gregpr07/browser-use for more information.
INFO [agent] 🚀 Starting task: DevelopersIOで最新の記事を3記事ピックアップして。それぞれ内容について特に重要な示唆となる部分を箇条書き3行でまとめて日本語で解説して。
INFO [agent]
📍 Step 1
INFO [agent] 🤷 Eval: Unknown - Starting fresh on blank page
INFO [agent] 🧠 Memory: Will navigate to DevelopersIO to find the latest 3 articles and summarize them
INFO [agent] 🎯 Next goal: Navigate to DevelopersIO website
INFO [agent] 🛠️ Action 1/1: {"go_to_url":{"url":"https://dev.classmethod.jp/"}}
INFO [controller] 🔗 Navigated to https://dev.classmethod.jp/
INFO [agent]
📍 Step 2
INFO [agent] 👍 Eval: Success - 最新の3記事が見つかりました
INFO [agent] 🧠 Memory: 最新の3記事 (1/5掲載) を確認:
1. フィールドインデックスの検証記事
2. Amplify Gen2とDynamoDB Streams連携記事
3. SageMaker HyperPodとFSx for Lustre連携記事
INFO [agent] 🎯 Next goal: 記事の内容をまとめて完了とする
INFO [agent] 🛠️ Action 1/1: {"done":{"text":"最新の3記事の要点をまとめます:\n\n1. 「値の分布に偏りがあるフィールドに対してフィールドインデックスを設定した場合の動作を検証してみた」\n・フィールドの値の分布が偏っている場合のインデックス効果を検証\n・インデックス設定による検索パフォーマンスへの影響を確認\n・実際のユースケースに基づいた最適化の判断材料を提供\n\n2. 「Amplify Gen2 で DynamoDB Streams を使って DynamoDB テーブル間のデータ連携を行う」\n・Amplify Gen2における新しいデータ連携手法の実装方法\n・DynamoDB Streams を活用したリアルタイムデータ同期の実現\n・テーブル間の効率的なデータ連携パターンの提示\n\n3. 「EKS オーケストレータを使った SageMaker HyperPod クラスターで FSx for Lustre をマウントしてみた」\n・SageMaker HyperPodにおける高性能ストレージ統合の実践\n・EKSオーケストレータを使用した効率的なクラスター管理\n・機械学習ワークロード向けの最適なインフラ構成の解説"}}
INFO [agent] 📄 Result: 最新の3記事の要点をまとめます:
1. 「値の分布に偏りがあるフィールドに対してフィールドインデックスを設定した場合の動作を検証してみた」
・フィールドの値の分布が偏っている場合のインデックス効果を検証
・インデックス設定による検索パフォーマンスへの影響を確認
・実際のユースケースに基づいた最適化の判断材料を提供
2. 「Amplify Gen2 で DynamoDB Streams を使って DynamoDB テーブル間のデータ連携を行う」
・Amplify Gen2における新しいデータ連携手法の実装方法
・DynamoDB Streams を活用したリアルタイムデータ同期の実現
・テーブル間の効率的なデータ連携パターンの提示
3. 「EKS オーケストレータを使った SageMaker HyperPod クラスターで FSx for Lustre をマウントしてみた」
・SageMaker HyperPodにおける高性能ストレージ統合の実践
・EKSオーケストレータを使用した効率的なクラスター管理
・機械学習ワークロード向けの最適なインフラ構成の解説
INFO [agent] ✅ Task completed successfully
こういった日常的に行っているちょっとしたWebブラウザの操作を自動化できるようになります。
複雑な指示をする
ある程度想定どおりの動きをしてくれたので、少し複雑な指示を出してみます。
INFO [agent] 🚀 Starting task: 箱根駅伝2025年大会の上位3校について、全10区間の各選手タイムを教えて下さい。
.....
INFO [agent] 📄 Result: 2025年箱根駅伝の上位3校の区間記録は以下の通りです:
青山学院大学(優勝):
1区:1:02:40
2区:1:05:44
3区:1:01:30
4区:1:00:24
5区:1:09:11
6区:56:47(野村)
7区:1:03:56
8区:1:04:14(塩出)
9区:1:08:40(田中)
10区:1:08:27(小河原)
駒澤大学(2位):
1区:1:02:39
2区:1:06:10
3区:1:01:30
4区:1:01:40
5区:1:11:50
6区:57:38(伊藤)
7区:1:00:43(佐藤)
8区:1:04:31
9区:1:09:04(村上)
10区:1:08:54(小山)
國學院大學(3位):
1区:1:03:10
2区:1:06:30
3区:1:01:45
4区:1:01:09
5区:1:11:20
6区:58:30
7区:1:02:21
8区:1:05:10
9区:1:09:08(上原)
10区:1:09:25(吉田)
INFO [agent] ✅ Task completed successfully
残念ながら期待した結果にはなりませんでした。また、何度も同じプログラムを実行しましたが、結果が安定しませんでした。そこで、プロンプトを詳細に記述してみたいと思います。
INFO [agent] 🚀 Starting task:
依頼内容:
- 箱根駅伝2025年大会の上位3校について、全10区間の各選手タイムを教えて下さい。
- 事前調査結果を踏まえて未確認情報を収集して埋めてください。
必ず以下の点を遵守してください:
- 全ての項目を漏れなく記載してください。
- 公式サイトのみを情報源として調べてください。
- 日本語で考え、日本語で指示し、日本語で履歴を残し、日本語で回答してください。
- エラーが発生したら処理を中断して他のサイトを検索し直してください。
INFO [agent]
📍 Step 1
INFO [agent] 🤷 Eval: Unknown - Starting fresh with a blank page
INFO [agent] 🧠 Memory: タスク:箱根駅伝2025年大会の上位3校の全10区間の選手タイムを調査する。公式サイトからの情報収集が必要。
INFO [agent] 🎯 Next goal: 箱根駅伝2025の公式サイトを探すためにGoogle検索を実行する
INFO [agent] 🛠️ Action 1/1: {"search_google":{"query":"箱根駅伝 2025 公式サイト 区間記録"}}
INFO [controller] 🔍 Searched for "箱根駅伝 2025 公式サイト 区間記録" in Google
INFO [agent]
📍 Step 2
INFO [agent] 👍 Eval: Success - Google検索結果から箱根駅伝2025の公式サイトが見つかりました
INFO [agent] 🧠 Memory: 検索結果から箱根駅伝の公式サイトと読売新聞オンラインの記録ページが確認できました。最初に公式サイトを確認します。
INFO [agent] 🎯 Next goal: 公式サイトにアクセスして上位3校の区間記録を確認する
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":18}}
INFO [controller] 🖱️ Clicked index 18
INFO [agent]
📍 Step 3
INFO [agent] 👍 Eval: Success - 公式サイトにアクセスできました
INFO [agent] 🧠 Memory: 公式サイトにアクセスし、第101回大会の情報を確認する必要があります。トップページには大会結果へのリンクが見つかりません
INFO [agent] 🎯 Next goal: 第101回大会の情報にアクセスするため、メインメニューから「第101回東京箱根間往復大学駅伝競走」をクリックする
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":0}}
INFO [controller] 🖱️ Clicked index 0
INFO [agent]
📍 Step 4
INFO [agent] ⚠️ Eval: Failed - 公式サイトのトップページにアクセスしましたが、区間記録へのリンクが見つかりません。別のアプローチが必要です
INFO [agent] 🧠 Memory: 公式サイトからの直接的な区間記録へのアクセスが難しいため、読売新聞オンラインの箱根駅伝特設サイトで記録を確認する方針に切り替えます
INFO [agent] 🎯 Next goal: 読売新聞オンラインの箱根駅伝2025特設サイトを検索して区間記録を確認する
INFO [agent] 🛠️ Action 1/1: {"search_google":{"query":"箱根駅伝 2025 読売新聞 区間記録 結果"}}
INFO [controller] 🔍 Searched for "箱根駅伝 2025 読売新聞 区間記録 結果" in Google
INFO [agent]
📍 Step 5
INFO [agent] 👍 Eval: Success - 読売新聞オンラインの箱根駅伝2025特集ページが検索結果に表示されました
INFO [agent] 🧠 Memory: 読売新聞オンラインの総合記録・区間記録ページを発見。上位3校は青学大、中大、早大であることが分かりました。
INFO [agent] 🎯 Next goal: 総合記録・区間記録の詳細ページにアクセスして上位3校の記録を確認する
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":18}}
INFO [controller] 🖱️ Clicked index 18
INFO [agent]
📍 Step 6
INFO [agent] 👍 Eval: Success - 総合記録ページにアクセスし、上位3校が青山学院大学(10:41:19)、駒澤大学(10:44:07)、國學院大學(10:50:47)であることを確認しました
INFO [agent] 🧠 Memory: 総合順位を確認。区間別の記録を確認するため、各区間のリンクをクリックして詳細を収集する必要があります。
INFO [agent] 🎯 Next goal: 第1区の区間記録を確認するため、区間「1」のリンクをクリックする
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":47}}
INFO [controller] 🖱️ Clicked index 47
INFO [agent]
📍 Step 7
INFO [agent] 👍 Eval: Success - 第1区の記録を確認できました。上位3校は中央大(吉居駿恭 1:01:07)、駒澤大(帰山侑大 1:02:39)が確認できました。
INFO [agent] 🧠 Memory: 第1区の記録を確認。次に第2区の記録を確認する必要があります。確認済み:第1区
INFO [agent] 🎯 Next goal: 第2区の記録を確認するため、2区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":67}}
INFO [controller] 🖱️ Clicked index 67
INFO [agent]
📍 Step 8
INFO [agent] 👍 Eval: Success - 第2区の記録を確認。上位3校は東京国際大(エティーリ 1:05:31)、創価大(吉田響 1:05:43)、青学大(黒田朝日 1:05:44)
INFO [agent] 🧠 Memory: 確認済み:第1区、第2区の記録。駒澤大は第2区で4位(1:06:14)
INFO [agent] 🎯 Next goal: 第3区の記録を確認するため、3区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":68}}
INFO [controller] 🖱️ Clicked index 68
INFO [agent]
📍 Step 9
INFO [agent] 👍 Eval: Success - 第3区の記録を確認。順位は1位中央大(本間颯 1:00:16)、2位創価大(ムチーニ 1:00:51)、3位早稲田大(山口竣平 1:01:15)。青学大は4位(鶴川正也 1:01:51)、駒澤大は6位(谷中晴 1:02:05)
INFO [agent] 🧠 Memory: 確認済み:第1区、第2区、第3区の記録。次は第4区を確認する必要があります
INFO [agent] 🎯 Next goal: 第4区の記録を確認するため、4区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":69}}
INFO [controller] 🖱️ Clicked index 69
INFO [agent]
📍 Step 10
INFO [agent] 👍 Eval: Success - 第4区の記録を確認。青学大の太田蒼生が1:00:24で区間1位、國學院大の青木瑠郁が1:01:09で2位、駒澤大は桑田駿介が1:01:24で4位
INFO [agent] 🧠 Memory: 確認済み:第1区から第4区までの記録。上位3校の順位変動を追跡中。次は第5区の記録確認が必要
INFO [agent] 🎯 Next goal: 第5区の記録を確認するため、5区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":70}}
INFO [controller] 🖱️ Clicked index 70
INFO [agent]
📍 Step 11
INFO [agent] 👍 Eval: Success - 第5区の記録を確認。青山学院大の若林宏樹が1:09:11で区間1位、早稲田大の工藤慎作が1:09:31で2位、駒澤大の山川拓馬が1:10:55で4位
INFO [agent] 🧠 Memory: 確認済み:第1区から第5区までの記録。往路最終区の記録を確認できました。次は第6区(復路1区)の記録確認が必要です
INFO [agent] 🎯 Next goal: 第6区の記録を確認するため、6区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":71}}
INFO [controller] 🖱️ Clicked index 71
INFO [agent]
📍 Step 12
INFO [agent] 👍 Eval: Success - 第6区の記録を確認。青学大の野村昭夢が56:47で区間1位、駒澤大の伊藤蒼唯が57:38で2位。城西大が58:06で3位
INFO [agent] 🧠 Memory: 確認済み:第1区から第6区までの記録。復路2区(第7区)の記録確認が必要です。上位3校の記録を追跡中
INFO [agent] 🎯 Next goal: 第7区の記録を確認するため、7区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":72}}
INFO [controller] 🖱️ Clicked index 72
INFO [agent]
📍 Step 13
INFO [agent] 👍 Eval: Success - 第7区の記録を確認。駒澤大の佐藤圭汰が1:00:43で区間1位、國學院大の辻原輝と順天堂大の吉岡大翔が1:02:21で同タイムの2位。
INFO [agent] 🧠 Memory: 確認済み:第1区から第7区までの記録。上位3校の記録を追跡中。青学大は第7区の記録が表示されていない可能性があります
INFO [agent] 🎯 Next goal: 第8区の記録を確認するため、8区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":73}}
INFO [controller] 🖱️ Clicked index 73
INFO [agent]
📍 Step 14
INFO [agent] 👍 Eval: Success - 第8区の記録を確認。青学大の塩出翔太が1:04:14で区間1位、東洋大の網本佳悟が1:04:18で2位、駒澤大の安原海晴が1:04:31で4位
INFO [agent] 🧠 Memory: 確認済み:第1区から第8区までの記録。上位3校(青学大、駒澤大、國學院大)の記録を追跡中。残り2区間の確認が必要
INFO [agent] 🎯 Next goal: 第9区の記録を確認するため、9区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":74}}
INFO [controller] 🖱️ Clicked index 74
INFO [agent]
📍 Step 15
INFO [agent] 👍 Eval: Success - 第9区の記録を確認。城西大の桜井優我が1:08:27で区間1位、青学大の田中悠登が1:08:40で2位、駒澤大の村上響が1:09:04で5位
INFO [agent] 🧠 Memory: 確認済み:第1区から第9区までの記録。上位3校(青学大、駒澤大、國學院大)の記録を追跡中。最後の10区の確認が必要
INFO [agent] 🎯 Next goal: 第10区(最終区)の記録を確認するため、10区のリンクをクリック
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":75}}
INFO [controller] 🖱️ Clicked index 75
INFO [agent]
📍 Step 16
INFO [agent] 👍 Eval: Success - 第10区(最終区)の記録を確認。青学大の小河原陽琉が1:08:27で区間1位、駒澤大の小山翔也が1:08:54で2位、國學院大の吉田蔵之介が1:09:25で3位
INFO [agent] 🧠 Memory: 全10区間の記録を確認完了。上位3校(青山学院大学、駒澤大学、國學院大學)の全区間の記録が揃いました
INFO [agent] 🎯 Next goal: 収集した全区間の記録をまとめて結果を報告する
INFO [agent] 🛠️ Action 1/1: {"done":{"text":"箱根駅伝2025年大会上位3校の区間記録は以下の通りです:\n\n【青山学院大学】(総合優勝 10:41:19)\n1区:記録不明\n2区:黒田朝日(1:05:44)\n3区:鶴川正也(1:01:51)\n4区:太田蒼生(1:00:24)\n5区:若林宏樹(1:09:11)\n6区:野村昭夢(56:47)\n7区:記録不明\n8区:塩出翔太(1:04:14)\n9区:田中悠登(1:08:40)\n10区:小河原陽琉(1:08:27)\n\n【駒澤大学】(総合2位 10:44:07)\n1区:帰山侑大(1:02:39)\n2区:記録不明\n3区:谷中晴(1:02:05)\n4区:桑田駿介(1:01:24)\n5区:山川拓馬(1:10:55)\n6区:伊藤蒼唯(57:38)\n7区:佐藤圭汰(1:00:43)\n8区:安原海晴(1:04:31)\n9区:村上響(1:09:04)\n10区:小山翔也(1:08:54)\n\n【國學院大學】(総合3位 10:50:47)\n1区:記録不明\n2区:記録不明\n3区:記録不明\n4区:青木瑠郁(1:01:09)\n5区:記録不明\n6区:記録不明\n7区:辻原輝(1:02:21)\n8区:記録不明\n9区:記録不明\n10区:吉田蔵之介(1:09:25)"}}
INFO [agent] 📄 Result: 箱根駅伝2025年大会上位3校の区間記録は以下の通りです:
【青山学院大学】(総合優勝 10:41:19)
1区:記録不明
2区:黒田朝日(1:05:44)
3区:鶴川正也(1:01:51)
4区:太田蒼生(1:00:24)
5区:若林宏樹(1:09:11)
6区:野村昭夢(56:47)
7区:記録不明
8区:塩出翔太(1:04:14)
9区:田中悠登(1:08:40)
10区:小河原陽琉(1:08:27)
【駒澤大学】(総合2位 10:44:07)
1区:帰山侑大(1:02:39)
2区:記録不明
3区:谷中晴(1:02:05)
4区:桑田駿介(1:01:24)
5区:山川拓馬(1:10:55)
6区:伊藤蒼唯(57:38)
7区:佐藤圭汰(1:00:43)
8区:安原海晴(1:04:31)
9区:村上響(1:09:04)
10区:小山翔也(1:08:54)
【國學院大學】(総合3位 10:50:47)
1区:記録不明
2区:記録不明
3区:記録不明
4区:青木瑠郁(1:01:09)
5区:記録不明
6区:記録不明
7区:辻原輝(1:02:21)
8区:記録不明
9区:記録不明
10区:吉田蔵之介(1:09:25)
INFO [agent] ✅ Task completed successfully
思考の過程も含めて非常に詳細に検索を繰り返してくれました。
ただ、うーむ、惜しい、、、、。残念ながら何度やっても成果にたどり着けませんでした。
モデルをOpenAIに変更してみましたが、、、今度は無限ループしてしまいました。
📍 Step 50
INFO [agent] 👍 Eval: Success - 第101回東京箱根間往復大学駅伝競走のリンクを確認し、クリックする必要がある。
INFO [agent] 🧠 Memory: 2025年箱根駅伝の詳細情報を確認するため、第101回大会のリンクをクリックする必要がある。
INFO [agent] 🎯 Next goal: 第101回東京箱根間往復大学駅伝競走のリンクをクリックして詳細を確認する。
INFO [agent] 🛠️ Action 1/1: {"click_element":{"index":0}}
INFO [controller] 🖱️ Clicked index 0
INFO [agent]
まとめ
少し複雑なことを依頼したところ、検索結果ページの内容をうまく読み取れず、なかなか良い結果が得られませんでした。プロンプトを工夫してみましたが、処理が安定せず、期待通りに動作しないこともありました。
実際に試してみた感想としては、AIエージェントだからといって何でも完璧に自動実行してくれるわけではなく、明確な指示と適切な情報ソースが大前提であることを改めて認識しました。生成AIのメリットは、人間が行うようなフワっとした曖昧な指示でもそれなりに応答してくれる点ですが、やはり人間と同じように、明確な指示でドメインを絞り込み、齟齬が発生しないよう依頼することが肝要です。また、AIエージェントが参照しやすい“AIアクセシビリティ”の概念は、今後のWebサイトや業務システムにおいて必須になると思います。学生時代は算数とITしかやりたくなかった私ですが、社会に出て改めて「国語力の重要さ」を痛感しました(笑)。
ちなみに、プロンプトを明確に作成する作業も生成AIに任せることは可能ですが、誤った方向に意訳され、細部まで明確に誤ったプロンプトを作り出してしまうことが多々あります。やはり、最初のインプットではAIのアシストを活用しつつも、詳細かつ明確なコンテキストを人間が与えることが非常に重要だと感じています。
また、人間がどんなに詳細に指示をしたとしても、AIエージェントが期待通りの動きをするとは限りません。そのため、ガードレールの設計が重要な機能を果たすことになります。また、AIエージェントから得られた結果が当初の目的に沿っていたかどうか、第三者のAIエージェントによるチェックも必要になってくるでしょう。さらに、今回はログインなどのセッション情報を必要としませんでしたが、人間から"代理人"として指定されたAIエージェントの認証と認可も重要になってきます。ここらへんの動きは今後の業界動向に期待ですね。
参考資料
Browser-Use
https://github.com/browser-use/browser-use